A Specification Logic for Termination Reasoning
نویسندگان
چکیده
We propose a logical framework for specifying and proving assertions about program termination. Although termination of programs has been well studied, it is usually added as an external component to the specification logic. Here we propose to integrate termination requirements directly into our specification logic, as temporal constraints for each phase of every method. Our temporal constraints can specify a strict decrease in a bounded measure for termination proofs and the unreachability of method exit for non-termination proofs. Furthermore, our termination-infused logic can leverage richer specification logics to help conduct more complex termination reasoning for programs with structural specification, heap manipulation, exception handling, and multiple phases. We expect our termination reasoning to directly benefit from any future improvements to our specification mechanism because it is fully integrated into our specification logic. Through an experimental evaluation, we report on the usability and practicality of a verification system, based on separation logic, that has been enhanced with our termination constraints.
منابع مشابه
An Integrated Logic for Termination and Non-Termination Reasoning
We propose a logical framework for specifying and proving assertions about program termination and non-termination. Although program termination has been well studied, it is usually added as an external component to a specification logic. Here we propose to integrate termination requirements directly into our specification logic, as temporal constraints for each execution phase of every method....
متن کاملNon-termination of Dalvik bytecode via compilation to CLP
We present a set of rules for compiling a Dalvik bytecode program into a logic program with array constraints. Non-termination of the resulting program entails that of the original one, hence the techniques we have presented before for proving non-termination of constraint logic programs can be used for proving non-termination of Dalvik programs. 1998 ACM Subject Classification D.2.4 Software/P...
متن کاملMonad-Independent Dynamic Logic in Has Casl
Monads have been recognized by Moggi as an elegant device for dealing with stateful computation in functional programming languages. In previous work, we have introduced a Hoare calculus for partial correctness of monadic programs. All this has been done in an entirely monad-independent way. Here, we extend this to a monad-independent dynamic logic (assuming a moderate amount of additional infr...
متن کاملPartial Recursive Functions in Higher-Order Logic
Based on inductive definitions, we develop an automated tool for defining partial recursive functions in Higher-Order Logic and providing appropriate reasoning tools for them. Our method expresses termination in a uniform manner and includes a very general form of pattern matching, where patterns can be arbitrary expressions. Termination proofs can be deferred, restricted to subsets of argument...
متن کاملReasoning About Method Calls in JML Specifications
The Java Modeling Language, JML, is an interface specification language that uses side-effect free Java expressions to describe program behavior. In particular, JML specifications can contain calls to side-effect free methods. To verify programs w.r.t. JML specifications, JML expressions have to be encoded in a program logic. This encoding is non-trivial for method calls. In this paper, we illu...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2012